home *** CD-ROM | disk | FTP | other *** search
/ The World of Computer Software / The World of Computer Software.iso / tp6bugs7.zip / TP6BUGS7.LST < prev    next >
File List  |  1993-01-09  |  14KB  |  365 lines

  1. TP6BUGS7.LST - Version 7 of TP 6.0 bug list
  2.  
  3. This is the last edition of my completely *un*official list of bugs in
  4. TP 6.0.  TP 7.0 and BP 7.0 were released in November 1992; I'm starting
  5. a bug list for those. The first edition (BP7BUGS1.LST) is being released
  6. at the same time as this last edition. For this list, I've noted which bugs
  7. appear to have been fixed in BP 7.0.
  8.  
  9. There were (at least) two releases both numbered 6.00: the original one
  10. in October 1990, and another in June 1991.  You can identify the later
  11. release by the date or by the file size:  TURBO.EXE is 325982 bytes in
  12. the later release.  Several bugs were fixed in the second release; some
  13. of those are marked below.  I've also heard of a 6.01 release dated July
  14. 1991, but haven't tested any of these bugs against it.
  15.  
  16. The list is very abbreviated;  if any of the items are too obscure, ask
  17. and I'll expand on them.  One abbreviation I've been asked about:
  18. "BASM" is the built-in assembler used in asm blocks.
  19.  
  20. Juergen Schlegelmilch sent me a very detailed list of bugs & fixes in TP
  21. 6.0 & Turbovision; the file version (TP6BUGSn.ZIP) of this list contains
  22. all of his comments.  It also contains a few patches and fixes that I've
  23. collected.  The file version will be available on Fidonet on the PDN
  24. Pascal file echo area, and on Internet from garbo.uwasa.fi.  It is also
  25. available on the PC Techniques section of CLMFORUM on Compuserve in DL
  26. 16, as TPBUGS.ZIP.
  27.  
  28. Many other people have sent me their bug lists; thanks to all of them.
  29. In particular, some recent additions are from Andy McFarland, Arno
  30. Haket, Hans Schleichert, Norbert Juffa, and Jud McCranie.  I know I've
  31. missed a few recent contributors; sorry!
  32.  
  33. I'd appreciate it if anyone sent me their own bug list; I'll publicize
  34. it on Usenet, Fidonet and Compuserve. I'd also appreciate hearing about
  35. patches.  (If you don't have access to any of those, I don't know how
  36. you're reading this, but I'll send you the latest version of the BP 7
  37. list on diskette if you send me $10.00 US or Canadian.  I'll fill up the
  38. rest of the disk with various utilities and programs I've written; let
  39. me know if there's any particular type you'd like.)
  40.  
  41. Duncan Murdoch
  42.  
  43.  dmurdoch@mast.queensu.ca  (Internet address)
  44.  71631,122                 (Compuserve)
  45.  DJ Murdoch at 1:249/99.5. (Fidonet)
  46.  
  47.  337 Willingdon Ave.
  48.  Kingston, Ontario, Canada
  49.  K7L 4J3
  50.  
  51.  
  52. January 3, 1993:
  53.  
  54. Longint constants given in decimal in BASM statements like "DD 666777"
  55. are truncated to 16 bits.  (Express it in hex, and things are fine!  Not
  56. fixed in BP 7.)
  57.  
  58. December 30, 1992:
  59.  
  60. Typed constants that are local to assembler routines can't be watched in the
  61. IDE or TD without explicitly giving the routine name as a prefix, e.g.
  62. MyAsmRoutine.MyConst. (Not fixed in BP 7.)
  63.  
  64. August 12, 1992:
  65.  
  66. The FLDLN2 instruction (which is valid on an 8087) triggers error 159,
  67. "286/287 instructions are not enabled" when compiled in the $N+,G- mode.
  68. (Fixed in BP 7.)
  69.  
  70. July 20, 1992:
  71.  
  72. The string formatting routines get the 19th digit wrong on very large Comp
  73. numbers. (Not fixed in BP 7.)
  74.  
  75. May 28, 1992:
  76.  
  77. The TDSTRIP utility which comes with the professional version of TP damages
  78. the .EXE header:  the min extra paragraphs field is set to 0. (See
  79. STRIPPED.ZIP in TP6BUGSn.ZIP for a damage detector).  (Fixed in BP 7.)
  80.  
  81. Actual heap allocation can be 511 bytes more than the maximum specified in the
  82. $M directive. (Not fixed in BP 7.)
  83.  
  84. April 17, 1992:
  85.  
  86. If the Objects unit is overlaid, calls to stream or collection Error
  87. methods can cause system crashes. (Fixed in BP 7.)
  88.  
  89. The Drivers unit misses keystrokes if the keyboard buffer has been
  90. reallocated.
  91.  
  92. Extensions to the Drivers unit INT09 (keyboard interrupt) handler won't
  93. work when run within the IDE, because the interrupt handler won't be
  94. installed.
  95.  
  96. A window that has neither the wfGrow now wfMove flags set does not
  97. disable the cmResize command when it is active.  (A fix is available:
  98. see TWindow.fix in TP6BUGSn.ZIP).  Not fixed in BP 7!
  99.  
  100. April 13, 1992:
  101.  
  102. The compiler doesn't detect overlapping case constants.  Only the first
  103. matching case is executed.  (Not fixed in BP 7.)
  104.  
  105. The Delay() routine in CRT gives inaccurate delays on some very fast
  106. machines. A patch (DELAY.FIX) from Borland is included in TP6BUGSn.ZIP.
  107. (Fixed in BP 7.)
  108.  
  109. The SetViewPort procedure accepts X1=X2 or Y1=Y2 (contrary to the
  110. documentation), but clipping doesn't work properly with these settings.
  111. (Fixed in BP 7.)
  112.  
  113. TopText, CentreText, and BottomText are defined differently for
  114. DefaultFont and stroked fonts.
  115.  
  116. Single and Double types typed constants are not correctly initialized
  117. for absolute values smaller than 1.17xxxxE-38 respectively 2.22xxxxE-308
  118. (their value wil be zero instead).  The lower limit of the dynamic range
  119. should be 1.5E-45 and 5.0E-324 respectively.  (Not fixed in BP 7.)
  120.  
  121. App.ISqr enters an endless loop for arguments greater than 32760.  (Not fixed
  122. in BP 7, but this bug doesn't affect operation in either version.)
  123.  
  124. Graph.SetTextJustify doesn't properly account for descenders; they can
  125. be clipped at the bottom of the screen.
  126.  
  127. BASM has the ranges of legal values incorrect for IN, OUT, INT, ENTER,
  128. AAM, AAD instructions. (Not fixed in BP 7.)
  129.  
  130. BASM allows references to nonexistent registers on the coprocessor, e.g.
  131. FADD ST, ST(123456).  (Not fixed in BP 7.)
  132.  
  133. The IDE doesn't properly single step across AAM xx and AAD xx
  134. instructions. (Not fixed in BP 7.)
  135.  
  136. BASM doesn't do proper checking on CALLs and JMPs to near/far procedures
  137. or absolute variables, and sometimes doesn't generate proper code, e.g.
  138.  JMP FAR PTR AbsoluteVariable    { AbsoluteVariable is declared absolutely }
  139.  CALL FAR PTR AbsoluteVariable
  140. (fixed BP 7.)
  141.  
  142. BASM doesn't flag the statements
  143.   MOV AX, [WORD]
  144.   MOV BYTE PTR AL,5
  145. as nonsense. (Fixed in BP 7.)
  146.  
  147. The coprocessor emulator doesn't handle special arguments like INF and
  148. NaN properly.  Quiet NaNs are treated as signalling NaNs, and operations
  149. on INF return NaN. (Not fixed in BP 7.)
  150.  
  151. The Random function will return 1.0 once every 2^32 calls in $N+ mode.
  152. This value should be folded to 0.0, so that Trunc(N*Random) can't return
  153. N.  (Fixed in BP 7.)
  154.  
  155. TRect.Union and TRect.Intersect don't perform set operations.  If two
  156. rectangles don't intersect, TRect.Intersect always returns
  157. ((0,0),(0,0)); the union of that empty rectangle with any other
  158. rectangle always includes the point (0,0).  (Not fixed in BP 7.)
  159.  
  160. The Str procedure rounds nnn.5 differently than either the Round or
  161. Trunc functions when printing reals with no decimal places.  In $N-
  162. mode, it is inconsistent; in $N+ mode, it consistently rounds up.  (Not fixed
  163. in BP 7.)
  164.  
  165. Feb 2, 1992:
  166.  
  167. The Drivers.MoveBuf procedure puts junk into the buffer when Attr is 0.
  168. (A fix is available; see MOVEBUF.FIX in TP6BUGSn.ZIP.)  (Fixed in BP 7.)
  169.  
  170. The Random(N) function doesn't produce a uniform distribution unless N
  171. is a power of 2, especially for large values of N. (Fixed in BP 7.)
  172.  
  173. The Val procedure can't convert the smallest longint value, -2147483648,
  174. nor can is it handled properly by Read/Readln.  All routines work
  175. properly on the hex equivalent, $80000000.  (Fixed in BP 7.)
  176.  
  177. The base type for a pointer type definition can't be a qualified
  178. identifier.  (Not fixed in BP 7.)
  179.  
  180. The following TV bugs are more fully described (and fixes are given!) in
  181. the file TVBUGS in TP6BUGSn.ZIP:
  182.  
  183. TFileEditor.NewBuffer allocates 0 bytes, but does not set BufSize
  184. to 0.
  185.  
  186. If the search string given to Editors.IScan nearly matches the last
  187. chars in the text, the routine runs over the end of the text, eventually
  188. replacing text.
  189.  
  190. TMemo cannot coexist in a TDialog with other objects having scrollbars,
  191. because TEditor.HandleEvent consumes all cmScrollBarChanged events.
  192.  
  193. TEditor.InsertBuffer does not reset the block marker.  If a call to it
  194. is followed by a backspace, the block is deleted.
  195.  
  196. If StdDlg.NoWildchars is called with an empty argument, it overwrites
  197. the stack.
  198.  
  199. THelpTopic.AddCrossRef allocates memory and then forgets to use it.
  200.  
  201. THelpIndex.Position returns garbage values if called with a negative
  202. argument.
  203.  
  204. THistory.Draw uses characters 221 and 222 which are not standard outside
  205. codepage 437.
  206.  
  207. December 3, 1991:
  208.  
  209. TP doesn't handle the denormal exception properly on an 8087 or 80287,
  210. so underflow sometimes creates non-zero results.  (Not fixed in 6.01; not
  211. tested in 7).
  212.  
  213. Compile time evaluation of the ROUND() function is different than
  214. run-time evaluation in $N+ mode on numbers ending in .5.  (Not fixed in
  215. BP 7.)
  216.  
  217. Arithmetic on the REAL type is sometimes inaccurate in the last few bits
  218. of the result.
  219.  
  220. The coprocessor emulator doesn't properly emulate the FINCSTP and
  221. FDECSTP instructions in BASM.  (These aren't used by compiled Pascal
  222. code.)  (Not fixed in BP 7.)
  223.  
  224. The coprocessor emulator doesn't respect the precision control bits. (Not
  225. fixed in BP 7.)
  226.  
  227. The SEG operator in BASM doesn't work on variables declared in the stack
  228. segment. (Not fixed in BP 7.)
  229.  
  230. Referencing fields of records in BASM in a WITH block doesn't add the
  231. base address.  (Not fixed in BP 7.)
  232.  
  233. BASM doesn't generate correct code for instructions like MOV AX,[WORD
  234. PTR BX]. (This is TASM Ideal mode syntax; MASM syntax MOV AX,WORD PTR
  235. [BX] is fine, as is MOV AX,[WORD PTR DS:BX].)  (Fixed in BP 7; ideal
  236. mode not accepted.)
  237.  
  238. The Graph.TextWidth function returns incorrect results when fonts are
  239. scaled.
  240.  
  241. October 31, 1991:
  242.  
  243. The instruction "IMUL AX, 16" (valid on an 80186+) is rejected by BASM.
  244. The equivalent "IMUL AX, AX, 16" does work (in $G+ mode).  (Not fixed in
  245. BP 7.)
  246.  
  247. October 26, 1991:
  248.  
  249. If a byte variable X = 0, then (X-1) DIV 8 produces a zero divide error.
  250. Fixed June 91 & in BP 7.
  251.  
  252. October 23, 1991:
  253.  
  254. Hitting tab on a help topic with no crossrefs will crash the help
  255. system.  A patch to HELPFILE.PAS is available from Borland.
  256.  
  257. October 17, 1991:
  258.  
  259. The coprocessor emulator does not respect the rounding bits internally
  260. or when storing results to Single or Double variables. (Not fixed in BP
  261. 7.)
  262.  
  263. October 11, 1991:
  264.  
  265. Segments in external .OBJ files with no class names (e.g. ABSOLUTE
  266. segments) will crash TURBO, TPC or TPCX.  (Fixed in BP 7.)
  267.  
  268. September 16, 1991:
  269.  
  270. The IDE will give incorrect matches when doing word searches on words at
  271. the start of lines (e.g. "Const" matches "onst").  (Fixed June 91 & in
  272. BP 7).
  273.  
  274. The compiler won't allow the optional identifier in a variant record to
  275. be an already defined scalar type identifer.  (Not fixed in BP 7.)
  276.  
  277. The compiler gives spurious errors if you nest loops very deeply (e.g.
  278. 256 deep). (Fixed in BP 7.)
  279.  
  280.  
  281. August 16, 1991
  282.  
  283. You can use typed constants and variables in constant expressions,
  284. giving garbage values.  (Fixed June 91 and in BP 7.)
  285.  
  286. The coprocessor emulator doesn't check properly for internal stack
  287. overflow; it just wraps around and trashes the top of the stack segment.
  288. (Fixed in BP 7.)
  289.  
  290. Succ(Seg(v)) = Seg(v)  and Pred(Seg(v)) = Seg(v) !  (Fixed June 91 and in
  291. BP 7.)
  292.  
  293. TBufStream writes garbage to the stream sometimes.  (A patch for this is
  294. included in TP6BUGSn.ZIP as TBUFSTRE.FIX.).  (Fixed in BP 7.)
  295.  
  296. IN doesn't properly handle out of range values.  (What it does is to
  297. demote out of range scalars to byte, ignoring any high bits.) Not fixed.
  298.  
  299. Referencing fields of records in inline machine code sometimes makes the
  300. compiler go quietly insane.  (Fixed in BP 7.)
  301.  
  302. Coprocessor errors are often reported at the wrong address, especially
  303. if the error occurs on the first pass through. (Fixed in BP 7, but new bug
  304. introduced!)
  305.  
  306. GetDir returns a root directory for non-existent drives.  (This is
  307. almost as documented.)
  308.  
  309. Horizontal text justification to the right side doesn't work if the
  310. writing direction is vertical; this is only in the DefaultFont.
  311.  
  312. Intr and MsDos don't always work properly in V86 mode under Windows 3,
  313. because they don't use the INT instruction.
  314.  
  315. The TVEdit unit can't input some digits.  (A patch for this is
  316. included in EDITOR.FIX in TP6BUGSn.ZIP.) Fixed in June 91.
  317.  
  318. ^T in TVEdit sometimes deletes more than the next word.  (This is by
  319. design, but inconsistent with the design of the IDE.)
  320.  
  321. ^QF followed by ^L followed by Space deletes words in TVEdit.  (This is
  322. also by design.)
  323.  
  324. TProgram doesn't clean up memory properly on exit.  (Fixed in BP 7.)
  325.  
  326. TFileViewer's FileName field is never disposed.
  327.  
  328. The IDE forgets your snow check setting if you jump to DOS and exit
  329. back.
  330.  
  331. Writeln wipes out the status word in the coprocessor. (Not fixed in BP 7.)
  332.  
  333. You can allocate an array bigger than 65528 bytes on the heap; it may
  334. wrap around and trash whatever precedes it.  (Not fixed in BP 7.)
  335.  
  336. The coprocessor emulator doesn't propagate NaNs the same way as a real
  337. coprocessor does. (Not fixed in BP 7.)
  338.  
  339. The string conversion routines sometimes print NaNs as INF.
  340.  
  341. Complicated expressions involving Reals compiled $N+ will unnecessarily
  342. overflow the coprocessor stack (and trigger the dangerous error above).
  343. (Not fixed in BP 7, but the dangerous error is gone.)
  344.  
  345. The $G+ option makes the inline assembler use inline floating point
  346. code, rather than the CD forms that allow emulation. (Fixed in BP 7.)
  347.  
  348. Graph3.Plot leaves a word on the stack; if you call it repeatedly, you
  349. may get a stack overflow; if you call it from a routine that doesn't
  350. have any locals, you're dead.  Fixed in June 91.
  351.  
  352. Some weird problems with F7 Trace; sometimes it just refuses to do it.
  353.  
  354. There are certain illegal Extended encodings that crash the debugger in
  355. TURBO. (Not fixed in BP 7!!)
  356.  
  357. Range checking shouldn't apply to the limits in a for loop. (Not fixed in BP
  358. 7.)
  359.  
  360. Method arguments shouldn't be at the same scoping level as method names.
  361.  
  362. The compiler exports private identifiers in .TPU files (though you can't
  363. use them).
  364.  
  365.